package com.test.springboot.springBootUtils.conf;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.GenericFilterBean;

import com.test.springboot.springBootUtils.filter.LogCostFilter;

/**
 * 过滤器的配置类
 * SpringBoot的过滤器方式:
 * 1.使用继承 Filter的子类 或者实现Filter类实现  
 * 2.使用注解的方式
 * @WebFilter 的优先级高于  FilterRegistrationBean 配置的;
 * @WebFilter 的执行顺序是根据 @WebFilter 注解修饰类的名称倒序执行 
 * @author My
 *
 */
@Configuration
public class FilterConfig {
	/**
		启用SpringBoot 过滤器功能
	 * @author huyong
	 * @date 2020年9月1日下午5:28:49
	 * @return
	 * @return FilterRegistrationBean<T>
	 */
	@SuppressWarnings("rawtypes")
	@Bean
	public FilterRegistrationBean registrationBean() {
		FilterRegistrationBean<GenericFilterBean> registrationBean = new FilterRegistrationBean<>();
		registrationBean.setFilter(new LogCostFilter());
		registrationBean.addUrlPatterns("/*");
		registrationBean.setName("LogCostFilter");
		registrationBean.setOrder(1);
		return registrationBean;
	}
}
